package studio.raptor.ddal.core.log.queue;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import studio.raptor.ddal.core.log.common.LogClientConstant;

import java.util.HashMap;
import java.util.Map;

/**
 * JavaQueue 队列操作
 */
public class JavaQueueHelper implements IQueueHelper{

	private static Logger logger = LoggerFactory.getLogger(JavaQueueHelper.class);
//	private JavaQueue javaQueue;
	private Map<String,JavaQueue> javaQueueMap;

	public JavaQueueHelper(){
		if(javaQueueMap==null){
			javaQueueMap=new HashMap();
			javaQueueMap.put( LogClientConstant.LOG_TYPE_SQL_PROCESS, new JavaQueue());
			javaQueueMap.put( LogClientConstant.LOG_TYPE_CONN_POOL, new JavaQueue());
		}
	}

	public Object readObj(String logType){
		try{
			JavaQueue javaQueue=javaQueueMap.get( logType );
			return javaQueue.take();
		}catch(Exception e){
			logger.error("get object from javaQueue error:", e);
		}
		return null;
	}

	public void writeObj(Object logModel,String logType){
		try{
			JavaQueue javaQueue=javaQueueMap.get( logType );
			javaQueue.addObj(logModel);
		}catch(Exception e){
			logger.error("write object to javaQueue error:", e);
		}
	}

	public int getDepth(String logType){
		JavaQueue javaQueue=javaQueueMap.get( logType );
		return javaQueue.getDepth();
	}

	public Map getJavaQueueMap() {
		return javaQueueMap;
	}
}
